草庐IT

Java TLS-PSK 套接字

全部标签

c# - 将套接字从 .NET 传递到非托管 C++ 代码

我目前有一个.NET程序启动与服务器的连接。有时我需要调用一个特殊的非托管C++代码,它使用到服务器的连接。如何在非托管C++代码中传递和使用来自.NET的套接字连接?提前致谢! 最佳答案 Socket类有Handle属性,可以使用。Socket.Handle@MSDN我曾怀疑这是否可行,但我能够毫不费力地让它发挥作用。首先,我制作了一个非托管C++dll来导出一个可以使用套接字执行某些操作的函数。这是我创建的函数。#include//Thisisanexampleofanexportedfunction.extern"C"__de

c++ - boost asio udp 套接字 async_receive_from 不调用处理程序

我想创建一个自治线程,专门用于使用boost库(asio)从UDP套接字接收数据。这个线程应该是一个无限循环,由从UDP套接字接收到的一些数据触发。在我的应用程序中,我需要使用异步接收操作。如果我使用同步函数receive_from,一切都会按预期工作。但是,如果我使用async_receive_from,则永远不会调用处理程序。由于我使用信号量来检测是否已接收到某些数据,因此程序锁定并且永远不会触发循环。我已经(使用网络分析器)验证发送方设备在UDP套接字上正确发送数据。我已在以下代码中找出问题。#include#include#include#include#includetype

c++ - 为 WinSocks 和 *nix 制作非阻塞套接字

在C/C++中,如何在WinSocks和*nix中将阻塞套接字转换为非阻塞套接字;这样select()才能正常工作。您可以为特定于平台的代码使用预处理器。 最佳答案 在Linux上:fcntl(fd,F_SETFL,O_NONBLOCK);Windows:u_longon=1;ioctlsocket(fd,FIONBIO,&on); 关于c++-为WinSocks和*nix制作非阻塞套接字,我们在StackOverflow上找到一个类似的问题: https:/

简单Java多线程套接字应用程序

我有这个简单的多线Java套接字应用程序。使用classClient.javapublicclassClient{privatestaticSocketsocket;privatestaticbooleanwaitForServer=false;publicstaticvoidmain(String[]args)throwsIOException{while(true){socket=newSocket("localhost",ServerPortInfo.getPort());PrintWriterprintWriter=newPrintWriter(socket.getOutputStre

c++ - 一次从套接字读取 1 个字节与读取大块

在性能方面,每次从套接字读取1个字节与读取大块之间有什么区别?我有一个C++应用程序需要从Web服务器拉取页面并逐行解析接收到的页面。目前,我一次读取1个字节,直到遇到CRLF或达到1024字节的最大值。如果读取大块(例如一次1024字节)在性能方面要好得多,关于如何实现我目前拥有的相同行为的任何想法(即能够一次存储和处理1行html)-直到CRLF还没有消耗后续字节)?编辑:我负担不起太大的缓冲区。由于该应用程序用于嵌入式设备,因此我的代码预算非常紧张。我更喜欢只保留一个固定大小的缓冲区,最好一次保留一个html行。这使我的解析和其他处理变得容易,因为每当我尝试访问缓冲区进行解析时,

c++ - 程序关闭后套接字保持打开状态(C++)

我目前正在编写一个小型服务器应用程序,我的问题是,当我关闭我的应用程序时(或者更好,按下eclipse中的终止按钮),套接字有时会保持打开状态,因此当我下次执行我的应用程序时次,bind()将失败并显示“地址已在使用中”。程序退出时如何正确关闭套接字?我已经放了close(mySocket);在类析构函数中,但这似乎并没有改变任何东西。 最佳答案 UseSO_REUSEADDR. 关于c++-程序关闭后套接字保持打开状态(C++),我们在StackOverflow上找到一个类似的问题:

c++ - 设置套接字超时?

使用套接字,我不确定如何设置超时?谢谢intsock,connected,bytes_recieved;charsend_data[128],recv_data[128];SOCKADDR_INserver_addr,client_addr;intsin_size;intj=0;::socket(AF_INET,SOCK_STREAM,0);server_addr.sin_family=AF_INET;server_addr.sin_port=htons(4000);server_addr.sin_addr.s_addr=INADDR_ANY;::bind(sock,(structso

c++ - 从已经关闭的套接字接收数据?

假设我有一个服务器应用程序-使用UNIX套接字通过TCP连接。连接是异步的——换句话说,客户端和服务器的套接字是非阻塞的。假设以下情况:在某些情况下,服务器可能决定向已连接的客户端发送一些数据并立即关闭连接:使用shutdown和SHUT_RDWR。所以,我的问题是-是否可以保证,当客户端调用recv时,它会收到(由服务器发送的)数据?或者,要接收数据,必须在服务器关闭之前调用recv?如果是这样,我应该怎么做(或者更准确地说,我应该怎么做)以确保客户端接收到数据? 最佳答案 您可以使用“setsockopt(SO_LINGER)”

c++ - 在 C/C++ 中通过套接字发送 int

我在通过套接字发送整数数组时遇到了麻烦。代码看起来像这样程序一:(在windows上运行)intbmp_info_buff[3];/*connectingandothers*//*Sendinformationsaboutbitmap*/send(my_socket,(char*)bmp_info_buff,3,0);程序2:(在中微子上运行)/*bufftostorebitmapinformationsize,with,length*/intbmp_info_buff[3];/*stuff*//*Readinformationsaboutbitmap*/recv(my_connect

网络编程套接字(1)

网络编程基础为什么需要网络编程?--丰富的网络资源用户在浏览器中,打开在线视频网站,如优酷看视频,实质通过网络,获取到网络上的一个视频资源与本地打开视频文件类似,只是视频文件这个资源的来源是网络.相比于本地资源来说,网络提供了更为丰富的网络资源:所谓的网络资源,其实就是在网络中可以获取的各种数据资源.而所有的网络资源,都是通过网络编程进行数据传输的. 什么是网络编程网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输). 当然,我们只要满足进程不同就行;所以即使是同一个主机,只要是不同的进程,基于网络来传输数据,也属于网络编程. 特殊的,对于开发来说,在条件有